home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / fb386 / lib / blb / button.blb < prev    next >
Text File  |  1994-12-27  |  4KB  |  50 lines

  1. 61400 '============================= ボタン動作プログラム Version 1.1 ================================
  2. 61401 'データ形式  BTN%(a,b,c)
  3. 61402 '                   a...ウインドウ識別番号(GUI.BLBの物、GUI.BLBを使わないときは適当に)
  4. 61403 '                   b...ボタン番号(特に意味無し)
  5. 61404 '                       c=0 ... ボタン左上絶対X座標
  6. 61405 '                       c=1 ... ボタン左上絶対Y座標
  7. 61406 '                       c=2 ... ボタンのX方向の長さ
  8. 61407 '                       c=3 ... ボタンのY方向の長さ
  9. 61408 '                       c=4 ... 同じ大きさのボタンがいくつ並んでいるか(00は不可)(16進数で16の位がx方向,1の位がy方向)
  10. 61409 '                       c=5 ... X方向のボタン間隔
  11. 61410 '                       c=6 ... Y方向のボタン間隔
  12. 61411 '                       c=7 ... ボタンの形 (0=四角 1=角なし四角 2...二重四角 3...角なし二重四角)
  13. 61412 '            BTN$(a,b,c) ...ボタンの中に書く文字(12ドットフォント)
  14. 61413 '                     c=n-1 ... BTN%(a,b,4)の場合のn項目目の文字
  15. 61414 *BLB_BUTTON_DRAW
  16. 61415  '  入力        A ...ウインドウ識別番号   B...ボタン番号
  17. 61416  '  壊れる変数  I%,J%,X%,Y%
  18. 61417  FOR I%=0 TO (BTN%(A,B,4)AND 15)-1:FOR J%=0 TO BTN(A,B,4)\16-1:X%=BTN%(A,B,0)+BTN%(A,B,5)*J%:Y%=BTN%(A,B,1)+BTN%(A,B,6)*I%
  19. 61418   ON BTN%(A,B,7)+1 GOSUB *BLB_BTN0,*BLB_BTN1,*BLB_BTN2,*BLB_BTN3
  20. 61419   SYMBOL(X%,Y%+2),BTN$(A,B,(BTN%(A,B,4)\16)*I%+J%),.75!,.75!,%8:NEXT J%,I%:RETURN
  21. 61420  *BLB_BTN0
  22. 61421   LINE(X%-1,Y%-1)-STEP(BTN%(A,B,2)+2,BTN%(A,B,3)+2),PSET,%8,BF,7:RETURN
  23. 61422  *BLB_BTN1
  24. 61423   CONNECT(X%,Y%-1)-STEP(BTN%(A,B,2),0)-STEP(1,1)-STEP(0,BTN%(A,B,3))-STEP(-1,1)-STEP(-BTN%(A,B,2),0)-STEP(-1,-1)-STEP(0,-BTN%(A,B,3)),%8,PSET,F,7:RETURN
  25. 61424  *BLB_BTN2
  26. 61425   LINE(X%-3,Y%-3)-STEP(BTN%(A,B,2)+6,BTN%(A,B,3)+6),PSET,%8,BF,7
  27. 61426   LINE(X%-1,Y%-1)-STEP(BTN%(A,B,2)+2,BTN%(A,B,3)+2),PSET,%8,BF,7:RETURN
  28. 61427  *BLB_BTN3
  29. 61428   CONNECT(X%-2,Y%-3)-STEP(BTN%(A,B,2)+4,0)-STEP(1,1)-STEP(0,BTN%(A,B,3)+4)-STEP(-1,1)-STEP(-BTN%(A,B,2)-4,0)-STEP(-1,-1)-STEP(0,-BTN%(A,B,3)-4),%8,PSET,F,7
  30. 61429   CONNECT(X%,Y%-1)-STEP(BTN%(A,B,2),0)-STEP(1,1)-STEP(0,BTN%(A,B,3))-STEP(-1,1)-STEP(-BTN%(A,B,2),0)-STEP(-1,-1)-STEP(0,-BTN%(A,B,3)),%8:RETURN
  31. 61430 *BLB_BUTTON_PRESS
  32. 61431  '入力        A...BTN%(a,b,c)のa      B...BTN%(a,b,c)の bのMAX
  33. 61432  '出力        A=-1,B<0...押してない                                                                                    a≠-1...A...並んでいるボタンのいくつ目か 、 B...BTN%(a,b,c)の b
  34. 61433  '壊れる変数  cc%,dd%,ee%,ff%,I%,J%,X%,Y%
  35. 61434  X%=MOUSE(0):Y%=MOUSE(1):FOR I%=0 TO B
  36. 61435  CC%=BTN%(A,I%,0):DD%=BTN%(A,I%,1)
  37. 61436  IF X%<CC% OR X%>CC%+BTN%(A,I%,2)+BTN%(A,I%,5)*(BTN%(A,I%,4)\16-1) OR Y%<DD% OR Y%>DD%+BTN%(A,I%,3)+BTN%(A,I%,6)*((BTN%(A,I%,4)AND 15)-1) THEN NEXT:A=-1:B=-1:RETURN
  38. 61437  B=I%:I%=32766:NEXT:GOTO *BLB_BTNPRESSED
  39. 61438  *BLB_BTNPRESSED
  40. 61439   EE%=-9999:FF%=-9999:WHILE MOUSE(2,0):I%=0:X%=MOUSE(0):Y%=MOUSE(1)
  41. 61440   J%=(X%-BTN%(A,B,0))\(BTN%(A,B,5)-BTN%(A,B,2)*(BTN%(A,B,5)=0))+((Y%-BTN%(A,B,1))\(BTN%(A,B,6)-BTN%(A,B,3)*(BTN%(A,B,6)=0)))*(BTN%(A,B,4)\16)
  42. 61441   IF (BTN%(A,B,4)\16)*(BTN%(A,B,4)AND 15)>J% AND J%>=0 THEN CC%=BTN%(A,B,0)+BTN%(A,B,5)*(J% MOD BTN%(A,B,4)\16):DD%=BTN%(A,B,1)+BTN%(A,B,6)*(J%\(BTN%(A,B,4)\16))
  43. 61442   IF X%>=CC% AND X%=<CC%+BTN%(A,B,2) AND Y%>=DD% AND Y%=<DD%+BTN%(A,B,3) THEN
  44. 61443    I%=1:IF FF%=-9999 THEN LINE(CC%,DD%)-STEP(BTN%(A,B,2),BTN%(A,B,3)),XOR,%7,BF:FF%=J%:EE%=J%
  45. 61444    IF J%<>FF% THEN LINE(BTN%(A,B,0)+BTN%(A,B,5)*(FF% MOD BTN%(A,B,4)\16),BTN%(A,B,1)+BTN%(A,B,6)*(FF%\(BTN(A,B,4)\16)))-STEP(BTN%(A,B,2),BTN%(A,B,3)),XOR,%7,BF:LINE(CC%,DD%)-STEP(BTN%(A,B,2),BTN%(A,B,3)),XOR,%7,BF:FF%=J%:EE%=J%
  46. 61445   ENDIF
  47. 61446   IF I%=0 AND FF%<>-9999 THEN LINE(BTN%(A,B,0)+BTN%(A,B,5)*(FF% MOD BTN%(A,B,4)\16),BTN%(A,B,1)+BTN%(A,B,6)*(FF%\(BTN%(A,B,4)\16)))-STEP(BTN%(A,B,2),BTN%(A,B,3)),XOR,%7,BF:EE%=-9999:FF%=-9999
  48. 61447   WEND:IF EE%>=0 THEN LINE(BTN%(A,B,0)+BTN%(A,B,5)*(EE% MOD BTN%(A,B,4)\16),BTN%(A,B,1)+BTN%(A,B,6)*(EE%\(BTN%(A,B,4)\16)))-STEP(BTN%(A,B,2),BTN%(A,B,3)),XOR,%7,BF:A=EE%:RETURN
  49. 61448   A=-1:B=-2:RETURN
  50.